var $$ = $$ || {};
$$.dhtml = {};
/**
 *  隔行换色
 */
$$.dhtml.row = function(){
	var listComponent = Ext.fly("edk-listComponent");
	if(listComponent){
	    listComponent =  listComponent.select('li:even/div');
	    if(listComponent.addCls){
	        listComponent.addCls('evenRow');
	    }else{
	        listComponent.addClass('evenRow');
	    }
	}
}

/**
 * 利用最快出错即最快响应站点的做法，实现多线路、多镜像下选择最快的速度。
 * 参数 sites 形如：
	var sites = [];
	autourl[1] = "http://www.cidianwang.com"
	autourl[2] = "http://www.aspxhome.com"
	autourl[3] = "http://www.llkyx.com"
	autourl[4] = "http://tool.aspxhome.com"
	autourl[5] = "http://baike.aspxhome.com"
	autourl[6] = "http://yohoo.com/intels"
 * @param {Array} sites
 */
$$.dhtml.speedDetect = function(sites){
	var img = '<img src="{0}" class="hide" onerror="$$.dhtml.speedDetect.skip = true;top.location(\"{0}\");" />';
	for(var i = 0, j = sites.length; i < j; i++){
		document.write(img.format(sites[i]));
	}
}
$$.dhtml.speedDetect.skip = false; // 为避免过多循环的而设的全局变量。



/**
 * 页面功能
 */
$$.pageFunction = {
	/**
	 * 为网站加入到客户的收藏。
	 * @param {String} title	网站在收藏夹的标题。
	 * @param {String} url		网站访问的地址。
	 */
	addBookmark: function(title, url){
		if($$.isIE){
			window.external.addFavorite(url, title);
		}else if($$.isFF){
			// You need add your href="{edk_websiteURL}" rel="sidebar" to the button.
		}else if(window.opera && window.print) {
			var mbm = document.createElement('a');
			mbm.setAttribute('rel','sidebar');
			mbm.setAttribute('href',url);
			mbm.setAttribute('title',title);
			mbm.click();
		}
	}

	/**
	 * 发送邮件
	 * @todo base64 encode
	 */
	,emailPage : function(){
		var btns = Ext.select('.edk-emailBtn');
		btns.elements.length && btns.on('click', function(){
			location.href = 
			'mailto:xxx@tagzine.com?subject=\u63A8\u8350\u65B0\u95FB: ' 
			+ document.title +
			'&body=\u6211\u5411\u4F60\u63A8\u8350\u8FD9\u6761\u6587\u7AE0\uFF0C\u5E0C\u671B\u4F60\u559C\u6B22\uFF01\u6587\u7AE0\u6807\u9898\uFF1A' 
			+ document.title + '\u3002\u8BF7\u70B9\u51FB\u67E5\u770B\uFF1A ' 
			+ location.href;
		});
	}

	/**
	 * 打印。
	 */
	,print : function(){
		var btns = Ext.select('.edk-printBtn');
		btns.elements.length && btns.on('click', function(){
			if(this.length > 0){
				var win = window.open("", "打印窗体……");
				
				var html = '<center><h1>{0}</h1></center>'.format(this[0][0].innerHTML);
				html += this[1][0].innerHTML;
				
				win.document.write(html + "<script>window.print();</script>");
				win.location.reload();
			}
		}, [Ext.query('.edk_contentPanel h1'), Ext.query('.edk_content div.contentBody')]);	
	}

	/**
	 * 调整字体大小
	 * @todo store in cookie? 暂不必。
	 */
	,adjustFont: function(){

		var p	 = Ext.select('.edk_content div.contentBody p');// 文章NOT Ext.select('.edk_content/p');
		var btns = Ext.select('.adjustFontSize');
		var value = $$.Cookies.get('edk_content-fontSize');
		
		p.elements.length && value && p.setStyle('font-size', value == 'big' ? '16px' : '9pt');

		p.elements.length && btns.elements.length && btns.on('click', function(e, el){
			if(el.className.indexOf('largeSizeFont') != -1){
				this.setStyle('font-size', '16px');
				$$.Cookies.set('edk_content-fontSize', 'big', 7);
			}else if(el.className.indexOf('defaultSizeFont') != -1){
				this.setStyle('font-size', '10.5pt');
				$$.Cookies.del('edk_content-fontSize');
			}else if(el.className.indexOf('smallSizeFont') != -1){
				this.setStyle('font-size', '9pt');
				$$.Cookies.set('edk_content-fontSize', 'small', 7);
			}
		}, p);
	}
	,big5 : function(){
		var btns = $$.getEl('edk-switchChinese');
		btns && $$.big5.init(btns);
	}
};


$$.UE = {
	/**
	 * 加入onCopy的事件，在用户复制的时候，强行加入声明版权。
	 * FF 通过 Flash插件实现复制功能。
	 */
	onCopyNote : function(){
		document.body.oncopy = function(e){
			var text;
			if($$.isIE){
				text =  document.selection.createRange();
				text = text.text;
			}else if($$.isFF){
				text = window.getSelection();
				text = text.toString();
			}

			text += "\r\n转载请保留本站{0}的链接，谢谢你的举手之劳！出处：{0}".format(location.href);
			
			(e || event).returnValue = false;
			$$.isIE && clipboardData.setData('Text' , text);
		}
	}
	
	
	/**
	 * 返回True表示已安装Firebug。
	 * 提示文字参考：
	 * “你已经按照Firebug的插件，这样会引致浏览页面的速度减慢。我们建议你针对我们关闭Firebug。”
	 * @return {Boolean}
	 */
	,detectFirebug : function(){
		return (console && console.firebug) || document.getElementById('_firebugConsole');
	}
	
	/**
	 *	禁止选择形成可复制的选区。
	 */
	,unselectable : function(){
		if($$.isIE){
			document.onselectstart = function(){
				var el = event.srcElement;
				if (!((el.tagName == "INPUT" && el.type.toLowerCase() == "text") || el.tagName == "TEXTAREA"|| el.tagName == "SELECT")){
					return false;
				}
				return true;
			}
		}else if($$.isFF){
			Ext.onReady(function(){
				document.getElementsByTagName('body')[0].style.MozUserSelect = 'none';
			});
			Ext.fly(document).on('mousedown', function(e){
				var bodyEl = document.getElementsByTagName('body')[0];
				var isFormEl = /(input|textarea|select)/ig.test(e.target.tagName)
				bodyEl.style.MozUserSelect = isFormEl ? 'text' : 'none';
			});
		}
	}
	
	/**
	 * 防止网页被嵌入框架的代码。
	 */
	,noEmbed_Frame : function(){
		try{
			top.location.hostname;
			if(top.location.hostname != window.location.hostname) {
		　　　　top.location.href = window.location.href;
			}
		}catch(e){
		　　top.location.href = window.location.href;
		}
	}
	
	/**
	 * 是否禁止鼠标右键？
	 */
	,noRightClick : function(){
		document.oncontextmenu = function(){
			return false;
		};	
	}
	
	/**
	 * @param {Boolean} giveWarnWhenRefreshinIE True表示为免除刷新时会提示的影响。
	 */
	,leaveWarning : function(preventGivingWarnWhenRefreshinIE){
		var leave = function(){
			return "提示：\“退出系统\”请点系统的\“安全退出\”!";
		}
	
		if(preventGivingWarnWhenRefreshinIE){
			//只有点右上角X的时候弹出提示,让用户确认(是否关闭)
			//解决了onbeforeunload()函数在刷新页面也弹出的问题)
			//而且无需再body中加载
			window.onbeforeunload = function(){
				//?event.clientX>   document.body.clientWidth-20   &&   event.clientY   <   0
				if (event.clientX > 360 && event.clientY < 0) {
					window.event.returnValue = $$.leaveWarning.Text
			    }
			}
			if(!$$.isIE){
				window.onbeforeunload = leave;
			}
			return 0;
		}
		window.onbeforeunload = leave;
		// 使BackSpace、F5等键无效
		Ext.getBody().on('keydown', function (e) {
		    // [Alt] + [←]
		    if (e.altKey && (e.keyCode == 37)) {
		        e.stopEvent();
		    }
		    // [Alt] + [→]
		    if (e.altKey && (e.keyCode == 39)) {
		        e.stopEvent();
		    }
		    // [F5]
		    if (e.keyCode == 116) {
		        if (Ext.isIE) e.browserEvent.keyCode = 0;
		        e.stopEvent();
		    }
		    // [Ctrl] + [R]
		    if (e.ctrlKey && (e.keyCode == 82)) {
		        e.stopEvent();
		    }
		    // [Esc]
		    if (e.keyCode == 27) {
		        e.stopEvent();
		    }
		    // [Backspace]
		    if (e.keyCode == 8
		            && ((e.getTarget().type != 'text'
		                && e.getTarget().type != 'textarea'
		                && e.getTarget().type != 'password')
		                || e.getTarget().readOnly)) {
		        e.stopEvent();
		    }
		    
		    return true;
		});
	}
};